"""
学生信息管理系统v1.0
"""


# 创建学生类
class Student:
    # 创建构造函数
    def __init__(self, student_id, name, age):
        # 添加属性
        self.student_id = student_id
        self.name = name
        self.age = age
        print(f"初始化{self.name}成功")


# 创建一个学生管理器类
class StudentManager:
    # 创建构造函数
    def __init__(self):
        self.students = []

    # 编写一个添加学生的方法
    def add_student(self, student):
        # 将student加到self.students列表
        self.students.append(student)
        # 把下一行代码改造为打印学生的姓名
        print(f"添加了{student.name}, 学号是{student.student_id},年龄是{student.age}")

    # 在这里编写查看列表的方法
    def view_list(self):
        # 使用for循环从self.students属性一个一个取内容
        for student in self.students:
            print(f"姓名：{student.name}, 学号：{student.student_id}, 年龄：{student.age}")

    # 在这里编写查询学生的方法
    def search_student(self, student_id):
        for student in self.students:
            if student_id in student.student_id:    # 模糊查询
                print(f"姓名：{student.name}, \
                学号：{student.student_id}, 年龄：{student.age}")
                return
        print("没有找到该学生")
        return

    # 在这里编写删除学生的方法
    def delete_student(self, student_id):
        for student in self.students:
            # 使用模糊查找，寻找学号或姓名匹配的学生
            if student_id in student.name or student_id in student.student_id:
                self.students.remove(student)
                print(f"删除了{student.name}, 学号是{student.student_id},年龄是{student.age}")
                return
        print("没有找到该学生")
        return


# 创建一个菜单
# 函数 menu()
def menu():
    print("=" * 20)
    print("学生信息管理系统\n")
    # 添加选项 1.录入信息 2.查询学生 3.删除学生 4.查看列表 5.退出
    print("请选择功能：1.录入信息 2.查询学生 3.删除学生 4.查看列表 5.退出")
    print("=" * 20)
    return input("请输入：")


# 编写mian函数
def main():
    # 创建一个学生管理器
    manager1 = StudentManager()

    # 创建一个学生管理器 manager
    manager = StudentManager()
    # 添加while循环，让程序能循环执行
    while True:
        # 接收用户的输入
        choice = menu()
        print(choice)
        # 使用if语句，按照用户输入打印操作
        if choice == "1":
            print("录入信息")
            # 使用input函数，接收学号赋值给student_id，提示：请输入学号：
            student_id = input("请输入学号：")
            # 使用input函数，接收姓名赋值给name，提示：请输入姓名：
            name = input("请输入姓名：")
            # 使用input函数，接收年龄赋值给age，提示：请输入年龄：
            age = input("请输入年龄：")
            # 按照以上三个信息，实例化一个学生
            student = Student(student_id, name, age)
            # 编写添加学生的逻辑 使用manager的add_student方法添加学生
            manager.add_student(student)

        # 如果choice为"2"的话，打印 查询学生
        elif choice == "2":
            print("查询学生")
            # 使用input函数，接收学号赋值给student_id，提示：请输入学号：
            student_id = input("请输入学号：")
            # 编写查询学生的逻辑 使用manager的search_student方法查询学生
            manager.search_student(student_id)
        elif choice == "3":
            print("删除学生")
            # 使用input函数，让用户输入学号或姓名
            student_id = input("请输入学号或姓名：")
            # 编写删除学生的逻辑 使用manager的delete_student方法删除学生
            manager.delete_student(student_id)
        elif choice == "4":
            print("查看列表")
            # 在这里编写查看列表的代码
            # 可以使用manager的view_list方法
            manager.view_list()
        elif choice == "5":
            print("退出")
        else:
            print("不要乱输入！！！！！！！！！！！")


# 调用main函数
main()
